/**
 * 给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使得出现次数超过两次的元素只出现两次 ，返回删除后数组的新长度。
 * 不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
 * 
 * 分为3种情况解答
 * 
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function (nums) {
  let f = false // true表示当前元素是否重复出现了
  let left = 0
  let right = 1

  while (right < nums.length) {
    if (nums[right] !== nums[left]) { // 
      nums[++left] = nums[right++]
      f = false
    } else if (nums[left] === nums[right] && !f) {
      nums[++left] = nums[right++]
      f = true
    } else {
      right++
    }
  }

  return left + 1
};